{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Using TensorFlow backend.\n"
     ]
    }
   ],
   "source": [
    "import lstm\n",
    "import time\n",
    "import matplotlib.pyplot as plt\n",
    "import pandas as pd\n",
    "import numpy as np"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "> Loading data... \n",
      "loading file\n"
     ]
    }
   ],
   "source": [
    "#Main Run Thread\n",
    "if __name__=='__main__':\n",
    "    global_start_time = time.time()\n",
    "\n",
    "    print('> Loading data... ')\n",
    "\n",
    "    #X_train, y_train, X_test, y_test = lstm.load_data('sp500.csv', seq_len, True)\n",
    "    IDIR = '../data/'\n",
    "    print('loading file')\n",
    "    x = np.arange(-50.0, 50.0, 1)\n",
    "    y1 = np.sin(x)\n",
    "    y1 = np.array(y1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "def load_data(data, seq_len, normalise_window):\n",
    "    sequence_length = seq_len + 1\n",
    "    result = []\n",
    "    for index in range(len(data) - sequence_length):\n",
    "        result.append(data[index: index + sequence_length])\n",
    "    \n",
    "    if normalise_window:\n",
    "        result = normalise_windows(result)\n",
    "\n",
    "    result = np.array(result)\n",
    "\n",
    "    row = round(0.9 * result.shape[0])\n",
    "    train = result[:int(row), :]\n",
    "    np.random.shuffle(train)\n",
    "    x_train = train[:, :-1]\n",
    "    y_train = train[:, -1]\n",
    "    x_test = result[int(row):, :-1]\n",
    "    y_test = result[int(row):, -1]\n",
    "\n",
    "    x_train = np.reshape(x_train, (x_train.shape[0], x_train.shape[1], 1))\n",
    "    x_test = np.reshape(x_test, (x_test.shape[0], x_test.shape[1], 1))  \n",
    "\n",
    "    return [x_train, y_train, x_test, y_test]\n",
    "x_train,y_train,x_test,y_test = load_data(y1,5,0)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "> Compilation Time :  0.01123356819152832\n",
      "Train on 80 samples, validate on 5 samples\n",
      "Epoch 1/100\n",
      "80/80 [==============================] - 0s - loss: 0.5113 - val_loss: 0.2861\n",
      "Epoch 2/100\n",
      "80/80 [==============================] - 0s - loss: 0.5016 - val_loss: 0.2834\n",
      "Epoch 3/100\n",
      "80/80 [==============================] - 0s - loss: 0.4957 - val_loss: 0.2839\n",
      "Epoch 4/100\n",
      "80/80 [==============================] - 0s - loss: 0.4928 - val_loss: 0.2843\n",
      "Epoch 5/100\n",
      "80/80 [==============================] - 0s - loss: 0.4877 - val_loss: 0.2821\n",
      "Epoch 6/100\n",
      "80/80 [==============================] - 0s - loss: 0.4840 - val_loss: 0.2818\n",
      "Epoch 7/100\n",
      "80/80 [==============================] - 0s - loss: 0.4815 - val_loss: 0.2801\n",
      "Epoch 8/100\n",
      "80/80 [==============================] - 0s - loss: 0.4713 - val_loss: 0.2801\n",
      "Epoch 9/100\n",
      "80/80 [==============================] - 0s - loss: 0.4741 - val_loss: 0.2792\n",
      "Epoch 10/100\n",
      "80/80 [==============================] - 0s - loss: 0.4660 - val_loss: 0.2764\n",
      "Epoch 11/100\n",
      "80/80 [==============================] - 0s - loss: 0.4656 - val_loss: 0.2740\n",
      "Epoch 12/100\n",
      "80/80 [==============================] - 0s - loss: 0.4622 - val_loss: 0.2724\n",
      "Epoch 13/100\n",
      "80/80 [==============================] - 0s - loss: 0.4531 - val_loss: 0.2709\n",
      "Epoch 14/100\n",
      "80/80 [==============================] - 0s - loss: 0.4551 - val_loss: 0.2679\n",
      "Epoch 15/100\n",
      "80/80 [==============================] - 0s - loss: 0.4541 - val_loss: 0.2642\n",
      "Epoch 16/100\n",
      "80/80 [==============================] - 0s - loss: 0.4441 - val_loss: 0.2607\n",
      "Epoch 17/100\n",
      "80/80 [==============================] - 0s - loss: 0.4487 - val_loss: 0.2573\n",
      "Epoch 18/100\n",
      "80/80 [==============================] - 0s - loss: 0.4446 - val_loss: 0.2556\n",
      "Epoch 19/100\n",
      "80/80 [==============================] - 0s - loss: 0.4340 - val_loss: 0.2534\n",
      "Epoch 20/100\n",
      "80/80 [==============================] - 0s - loss: 0.4324 - val_loss: 0.2522\n",
      "Epoch 21/100\n",
      "80/80 [==============================] - 0s - loss: 0.4306 - val_loss: 0.2513\n",
      "Epoch 22/100\n",
      "80/80 [==============================] - 0s - loss: 0.4249 - val_loss: 0.2483\n",
      "Epoch 23/100\n",
      "80/80 [==============================] - 0s - loss: 0.4234 - val_loss: 0.2445\n",
      "Epoch 24/100\n",
      "80/80 [==============================] - 0s - loss: 0.4167 - val_loss: 0.2429\n",
      "Epoch 25/100\n",
      "80/80 [==============================] - 0s - loss: 0.4152 - val_loss: 0.2403\n",
      "Epoch 26/100\n",
      "80/80 [==============================] - 0s - loss: 0.4118 - val_loss: 0.2391\n",
      "Epoch 27/100\n",
      "80/80 [==============================] - 0s - loss: 0.4067 - val_loss: 0.2354\n",
      "Epoch 28/100\n",
      "80/80 [==============================] - 0s - loss: 0.3977 - val_loss: 0.2322\n",
      "Epoch 29/100\n",
      "80/80 [==============================] - 0s - loss: 0.3981 - val_loss: 0.2296\n",
      "Epoch 30/100\n",
      "80/80 [==============================] - 0s - loss: 0.4025 - val_loss: 0.2270\n",
      "Epoch 31/100\n",
      "80/80 [==============================] - 0s - loss: 0.3907 - val_loss: 0.2245\n",
      "Epoch 32/100\n",
      "80/80 [==============================] - 0s - loss: 0.3878 - val_loss: 0.2237\n",
      "Epoch 33/100\n",
      "80/80 [==============================] - 0s - loss: 0.3864 - val_loss: 0.2217\n",
      "Epoch 34/100\n",
      "80/80 [==============================] - 0s - loss: 0.3734 - val_loss: 0.2192\n",
      "Epoch 35/100\n",
      "80/80 [==============================] - 0s - loss: 0.3763 - val_loss: 0.2166\n",
      "Epoch 36/100\n",
      "80/80 [==============================] - 0s - loss: 0.3623 - val_loss: 0.2133\n",
      "Epoch 37/100\n",
      "80/80 [==============================] - 0s - loss: 0.3662 - val_loss: 0.2107\n",
      "Epoch 38/100\n",
      "80/80 [==============================] - 0s - loss: 0.3618 - val_loss: 0.2081\n",
      "Epoch 39/100\n",
      "80/80 [==============================] - 0s - loss: 0.3650 - val_loss: 0.2039\n",
      "Epoch 40/100\n",
      "80/80 [==============================] - 0s - loss: 0.3588 - val_loss: 0.2032\n",
      "Epoch 41/100\n",
      "80/80 [==============================] - 0s - loss: 0.3418 - val_loss: 0.1998\n",
      "Epoch 42/100\n",
      "80/80 [==============================] - 0s - loss: 0.3447 - val_loss: 0.1974\n",
      "Epoch 43/100\n",
      "80/80 [==============================] - 0s - loss: 0.3298 - val_loss: 0.1952\n",
      "Epoch 44/100\n",
      "80/80 [==============================] - 0s - loss: 0.3383 - val_loss: 0.1942\n",
      "Epoch 45/100\n",
      "80/80 [==============================] - 0s - loss: 0.3290 - val_loss: 0.1891\n",
      "Epoch 46/100\n",
      "80/80 [==============================] - 0s - loss: 0.3215 - val_loss: 0.1846\n",
      "Epoch 47/100\n",
      "80/80 [==============================] - 0s - loss: 0.3218 - val_loss: 0.1840\n",
      "Epoch 48/100\n",
      "80/80 [==============================] - 0s - loss: 0.3232 - val_loss: 0.1822\n",
      "Epoch 49/100\n",
      "80/80 [==============================] - 0s - loss: 0.3228 - val_loss: 0.1788\n",
      "Epoch 50/100\n",
      "80/80 [==============================] - 0s - loss: 0.3055 - val_loss: 0.1759\n",
      "Epoch 51/100\n",
      "80/80 [==============================] - 0s - loss: 0.2975 - val_loss: 0.1750\n",
      "Epoch 52/100\n",
      "80/80 [==============================] - 0s - loss: 0.3038 - val_loss: 0.1739\n",
      "Epoch 53/100\n",
      "80/80 [==============================] - 0s - loss: 0.2988 - val_loss: 0.1719\n",
      "Epoch 54/100\n",
      "80/80 [==============================] - 0s - loss: 0.3010 - val_loss: 0.1694\n",
      "Epoch 55/100\n",
      "80/80 [==============================] - 0s - loss: 0.2867 - val_loss: 0.1643\n",
      "Epoch 56/100\n",
      "80/80 [==============================] - 0s - loss: 0.2824 - val_loss: 0.1659\n",
      "Epoch 57/100\n",
      "80/80 [==============================] - 0s - loss: 0.2849 - val_loss: 0.1652\n",
      "Epoch 58/100\n",
      "80/80 [==============================] - 0s - loss: 0.2658 - val_loss: 0.1623\n",
      "Epoch 59/100\n",
      "80/80 [==============================] - 0s - loss: 0.2724 - val_loss: 0.1597\n",
      "Epoch 60/100\n",
      "80/80 [==============================] - 0s - loss: 0.2678 - val_loss: 0.1565\n",
      "Epoch 61/100\n",
      "80/80 [==============================] - 0s - loss: 0.2579 - val_loss: 0.1562\n",
      "Epoch 62/100\n",
      "80/80 [==============================] - 0s - loss: 0.2522 - val_loss: 0.1531\n",
      "Epoch 63/100\n",
      "80/80 [==============================] - 0s - loss: 0.2636 - val_loss: 0.1530\n",
      "Epoch 64/100\n",
      "80/80 [==============================] - 0s - loss: 0.2703 - val_loss: 0.1504\n",
      "Epoch 65/100\n",
      "80/80 [==============================] - 0s - loss: 0.2621 - val_loss: 0.1514\n",
      "Epoch 66/100\n",
      "80/80 [==============================] - 0s - loss: 0.2460 - val_loss: 0.1506\n",
      "Epoch 67/100\n",
      "80/80 [==============================] - 0s - loss: 0.2533 - val_loss: 0.1460\n",
      "Epoch 68/100\n",
      "80/80 [==============================] - 0s - loss: 0.2434 - val_loss: 0.1445\n",
      "Epoch 69/100\n",
      "80/80 [==============================] - 0s - loss: 0.2454 - val_loss: 0.1429\n",
      "Epoch 70/100\n",
      "80/80 [==============================] - 0s - loss: 0.2316 - val_loss: 0.1427\n",
      "Epoch 71/100\n",
      "80/80 [==============================] - 0s - loss: 0.2282 - val_loss: 0.1448\n",
      "Epoch 72/100\n",
      "80/80 [==============================] - 0s - loss: 0.2200 - val_loss: 0.1413\n",
      "Epoch 73/100\n",
      "80/80 [==============================] - 0s - loss: 0.2084 - val_loss: 0.1430\n",
      "Epoch 74/100\n",
      "80/80 [==============================] - 0s - loss: 0.2203 - val_loss: 0.1397\n",
      "Epoch 75/100\n",
      "80/80 [==============================] - 0s - loss: 0.2150 - val_loss: 0.1360\n",
      "Epoch 76/100\n",
      "80/80 [==============================] - 0s - loss: 0.2047 - val_loss: 0.1358\n",
      "Epoch 77/100\n",
      "80/80 [==============================] - 0s - loss: 0.2141 - val_loss: 0.1327\n",
      "Epoch 78/100\n",
      "80/80 [==============================] - 0s - loss: 0.2091 - val_loss: 0.1366\n",
      "Epoch 79/100\n",
      "80/80 [==============================] - 0s - loss: 0.2056 - val_loss: 0.1339\n",
      "Epoch 80/100\n",
      "80/80 [==============================] - 0s - loss: 0.1843 - val_loss: 0.1320\n",
      "Epoch 81/100\n",
      "80/80 [==============================] - 0s - loss: 0.1935 - val_loss: 0.1273\n",
      "Epoch 82/100\n",
      "80/80 [==============================] - 0s - loss: 0.2196 - val_loss: 0.1183\n",
      "Epoch 83/100\n",
      "80/80 [==============================] - 0s - loss: 0.1828 - val_loss: 0.1160\n",
      "Epoch 84/100\n",
      "80/80 [==============================] - 0s - loss: 0.1977 - val_loss: 0.1153\n",
      "Epoch 85/100\n",
      "80/80 [==============================] - 0s - loss: 0.1759 - val_loss: 0.1138\n",
      "Epoch 86/100\n",
      "80/80 [==============================] - 0s - loss: 0.1790 - val_loss: 0.1112\n",
      "Epoch 87/100\n",
      "80/80 [==============================] - 0s - loss: 0.1770 - val_loss: 0.1038\n",
      "Epoch 88/100\n",
      "80/80 [==============================] - 0s - loss: 0.1800 - val_loss: 0.1073\n",
      "Epoch 89/100\n",
      "80/80 [==============================] - 0s - loss: 0.1656 - val_loss: 0.1052\n",
      "Epoch 90/100\n",
      "80/80 [==============================] - 0s - loss: 0.1477 - val_loss: 0.1041\n",
      "Epoch 91/100\n",
      "80/80 [==============================] - 0s - loss: 0.1400 - val_loss: 0.1038\n",
      "Epoch 92/100\n",
      "80/80 [==============================] - 0s - loss: 0.1465 - val_loss: 0.1018\n",
      "Epoch 93/100\n",
      "80/80 [==============================] - 0s - loss: 0.1396 - val_loss: 0.0993\n",
      "Epoch 94/100\n",
      "80/80 [==============================] - 0s - loss: 0.1399 - val_loss: 0.0945\n",
      "Epoch 95/100\n",
      "80/80 [==============================] - 0s - loss: 0.1415 - val_loss: 0.0891\n",
      "Epoch 96/100\n",
      "80/80 [==============================] - 0s - loss: 0.1323 - val_loss: 0.0894\n",
      "Epoch 97/100\n",
      "80/80 [==============================] - 0s - loss: 0.1260 - val_loss: 0.0908\n",
      "Epoch 98/100\n",
      "80/80 [==============================] - 0s - loss: 0.1323 - val_loss: 0.0851\n",
      "Epoch 99/100\n",
      "80/80 [==============================] - 0s - loss: 0.1271 - val_loss: 0.0802\n",
      "Epoch 100/100\n",
      "80/80 [==============================] - 0s - loss: 0.1023 - val_loss: 0.0767\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYYAAAD8CAYAAABzTgP2AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xlc1HX+wPHXzHCfyin3IR4oIsKgeGdomhnmhbpmlqVl\nVrttW7nbtttW29rur223tDWtzTPRLKULM/M+EFExkVRSOQXkUu57fn98A2VFGJgbPs/Hw8fmzPf7\nnTcuM+/5fo73W6ZSqVQIgiAIwi/khg5AEARBMC4iMQiCIAitiMQgCIIgtCISgyAIgtCKSAyCIAhC\nKyIxCIIgCK2IxCAIgiC0IhKDIAiC0IpIDIIgCEIrZoYOoCtcXFzw9/c3dBiCIAgmJSMjg6Kiog6P\nM8nE4O/vT3JysqHDEARBMClKpVKt48RQkiAIgtCKSAyCIAhCKyIxCIIgCK2Y5ByDIAjdR319PTk5\nOdTU1Bg6lG7DysoKb29vzM3Nu3S+SAyCIBhUTk4O9vb2+Pv7I5PJDB2OyVOpVBQXF5OTk0NAQECX\nriGGkgRBMKiamhqcnZ1FUtASmUyGs7OzRndgIjEIgmBwIilol6b/nmIoSRAEvVGpVBRV1HG1qJKM\nokoqahuIchLdhY2NSAyCIGhdaWUdV4ulD/+MokquFFWSUVxJRlEVFbUNrY7dMc/XQFFKiouLiY6O\nBiA/Px+FQoGrqysASUlJWFhYaOV19u7dy6xZswgMDKSyshIPDw9efvllpk6d2u55+/btw8bGhqio\nKK3EoQ6RGARB6JLymnoyiqq4WlzJ1ULpg/9qkfTnZnV9y3FyGXj3tsHfxZYI394EuNji72JLgIst\nT246RUVtAyqVymDDSc7OzqSkpADw2muvYWdnx+9+97tWx6hUKlQqFXK5ZqPvEyZMYNeuXQCcPn2a\nGTNmsHHjRsaPH3/Xc/bt24eLi4tIDIIgGIequgYyiqpaPvQzim4lgKKKulbHejpa4e9iy7RQD+nD\n31lKAL5ONliYtf2B+sTYQOprr1NR24C9VdeWVurKzz//TExMDMOGDePMmTMkJCQwdOhQbty4AUBc\nXBx79+7lo48+oqCggGXLlpGVlYVcLue9997r8IM8PDycV155hVWrVjF+/Hji4+N56623qKurw9XV\nlc2bN1NeXs5HH32EQqFg/fr1fPDBBxQWFt5xnJubm1Z/dpEYBKGHq21oJKu4Svrgv+1bf0ZRFfll\nrVe2uNlb4u9iS/RA95Zv/QEutvg522Blruj0a8cM9eRIciGF5bXYW5nzl6/Ok3atTFs/GgCDPB34\n84ODu3TuhQsX2LhxI0qlkoaGhrse99xzz/HSSy8RFRVFRkYG06ZNIzU1tcPrh4eH8/777wMwbtw4\nYmJikMlkrFmzhnfeeYe3336bJ554AhcXF37zm98AUFpa2uZx2iQSgyD0APWNTeSUVt8a778tCeTe\nqEZ12/yvk60F/s42jApyJvCXYZ/mb/92ltr9yLAwk2NnqaCitoHqukatXlsb+vbtq1bhub1793Lx\n4sWWv5eWllJdXY21tXW756lu+4fPysoiNjaW/Px8amtr6d+/f5vnqHucJkRiEIRuLvFKMY99cpLq\n+lsfvPZWZgS62BLh15tZ4d4t3/z9XWxxtNbvkI6thRkqmYyiitouf7PXFVtb25b/lsvlrT7Ib98n\noFKpujRRfebMGYKDgwFYvnw5f/jDH5g6dSp79+5l5cqVbZ6j7nGaEIlBELq51ft/xt7KjDceCiHA\nxQZ/Z1ucbC2MZu+AXC7D0daC4so6+jQ2Ya4wzu1Vcrmc3r17k56eTt++fdm5c2fL6qWJEyeyevVq\nnn/+eQBSUlIICwtr93opKSm89dZbbNiwAYCbN2/i5eWFSqVqeQzA3t6e8vLylr/f7ThtMs7/BwRB\n0IrLhRUcTi9iYZQfsyO8ifBzwtnO0miSQjNnOwtQqSiqqDV0KO16++23mTx5MqNGjcLb27vl8dWr\nV3P06FFCQ0MZNGgQ69ata/P8/fv3M2zYMAYMGMBzzz3HBx980LIi6bXXXmPGjBlERkbi7u7ecs70\n6dPZvn07w4YN49ixY3c9TptkqtvvjUyEUqkUjXoEQQ2vfXmeLScyObYiGld7S0OH06affvqJ4OBg\nMoulDW8D+zigkBtX4jJFzf+ut1P3s1PcMQhCN1VZ28Dnp3KYOsTDaJPC7VzsLGlsUlFaVdfxwYJO\nicQgCN3UzjO5lNc28MhIf0OHohZbSzNsLMwoqqjFBAcyuhWRGAShG1KpVGw8nsFgTwfCfXsZOhy1\nudpZUNfQRNltO6cF/ROJQRC6oRNXS7hUUMGikabV48DB2hwLMzmFFWI4yZC0khh2797NgAEDCAoK\nanNN7T/+8Q/CwsIICwsjJCQEhUJBSUkJAP7+/gwZMoSwsDC1NpIIgtCxjccz6GVjTkyYp6FD6RSZ\nTIaLnSVVdQ1U1t59p7GgWxrvY2hsbGT58uV8//33eHt7ExkZSUxMDIMGDWo55sUXX+TFF18E4Kuv\nvuLdd9/Fycmp5fn9+/fj4uKiaSiCIAD5N2v47nwBj48J6FKZCkPrbWNBQVkNRRW12Gp5p7WgHo3v\nGJKSkggKCiIwMBALCwvmzZtHfHz8XY/funUr8+fP1/RlBUG4i09PZNKkUvHwCD9Dh9IlCrkMZ1sL\nblbXU9ugnzIZCoWiZURjzpw5VFVVdflaBw4cYNq0aQB8+eWX7e5MvnHjBh988EHL369du8bs2bO7\n/NraonFiyM3NxcfHp+Xv3t7e5ObmtnlsVVUVu3fvZtasWS2PyWQyJk6cSEREBGvXrtU0nHYlXinm\no8NXdPoagmBIdQ1NfJqUzYQBbvg62xg6nC5r3oT3vxVcdcXa2pqUlBRSU1OxsLBgzZo1rZ5XqVQ0\nNTV1+roxMTGsWLHirs//b2Lw9PRkx44dnX4dbdPr5PNXX33F6NGjWw0jHTlyhJSUFBISEli9ejWH\nDh1q89y1a9eiVCpRKpUUFhZ26fX3phXw9u4LRr+7UhC6KiE1j6KKWh4ZaZp3C83MFXJ6WZtTWllH\nQ2PnP5A1MXbsWH7++WcyMjIYMGAAjzzyCCEhIWRnZ7Nnzx5GjhxJeHg4c+bMoaKiApDmWQcOHEh4\neDhffPFFy7XWr1/PM888A0BBQQEzZsxg6NChDB06lGPHjrFixQouX75MWFgYL774IhkZGYSEhABS\nLabHHnuMIUOGMGzYMPbv399yzZkzZzJlyhT69evHSy+9pPV/A40H8Ly8vMjOzm75e05ODl5eXm0e\nGxcXd8cwUvOxbm5uzJgxg6SkJMaNG3fHuUuXLmXp0qUAXZ6knhvpw0dHrrLzdC5LxgV26RqCYMw2\nHc/E39mGcf1cDR1K1ySsgPxzAHiqVPSua6TJTA6a1E/qMwTuV6/QXENDAwkJCUyZMgWA9PR0NmzY\nQFRUFEVFRbz55pvs3bsXW1tb3n77bf75z3/y0ksvsWTJEvbt20dQUBBz585t89rPPfcc48ePZ+fO\nnTQ2NlJRUcHKlStJTU1taRSUkZHRcvzq1auRyWScO3eOCxcucN9993Hp0iVAqrN05swZLC0tGTBg\nAM8++2yrkRtNaXzHEBkZSXp6OlevXqWuro64uDhiYmLuOO7mzZscPHiQ6dOntzxWWVnZUhyqsrKS\nPXv2tGRLXejnbs8w315sS84WG2iEbuf8tZskZ5bycJQf8m5QUkIhk6GQy6hvbEKFbt+v1dXVLSsj\nfX19efzxxwHw8/NrabiTmJhIWloao0ePJiwsjA0bNpCZmcmFCxcICAigX79+yGQyHn744TZfY9++\nfSxbtkz62RQKHB0d243pyJEjLdcaOHAgfn5+LYkhOjoaR0dHrKysGDRoEJmZmVr5d2im8R2DmZkZ\nq1atYvLkyTQ2NrJ48WIGDx7cMkb31FNPAbBz507uu+++VmVsm2+tQMrUv/rVr1oyta7MVfqw4otz\nnM66QYRfb52+liDo06bjmViZy5kTob1vjnr3P9/sG2rquVpUiXdvG5xstdN7uS3Ncwz/6/bPK5VK\nxaRJk9i6dWurY9o6T9csLW+VOFEoFO02EeoKrcwxTJ06lUuXLnH58mVeeeUVQEoIzUkB4NFHHyUu\nLq7VeYGBgZw9e5azZ89y/vz5lnN1adpQT2wsFGw/md3xwYJgIm5W1bMrJZcZw7xwtDGuFpmasLM0\nw8pcYRRlMqKiojh69Cg///wzII1yXLp0iYEDB5KRkcHly5cB7kgczaKjo/nPf/4DSMv8b968eUdJ\n7duNHTuWLVu2AHDp0iWysrIYMGCAtn+sNvW4nc92lmY8MMSDr3+8JjbQCN3GZ6eyqalvYmGUv6FD\n0armDW819Y1UGPj96urqyvr165k/fz6hoaGMHDmSCxcuYGVlxdq1a3nggQcIDw+/a//lf//73+zf\nv58hQ4YQERFBWloazs7OjB49mpCQkJa9Xs2efvppmpqaGDJkCHPnzmX9+vWt7hR0qUeW3T6VWcKs\n/xzn77NCiY004dtuQQCamlRMeOcAbvaWfPbUKEOH02ltlYe+XZNKxYX8cqzM5AS62ukxMtMmym53\nUrhvb/q62rItWQwnCabvYHohmcVVLDSRKqqdJZfJcLG1kPpC1xtfX+juqEcmBplMxtxIH05llvLz\n9bbH9wTBVGw8loGrvSVTBvcxdCg642RrgVwmo6hc7EHShx6ZGABmhntjJpexTUxCCyYss7iSA5cK\nmT/cFwsz0307dzSibaaQ09vWghvV9dTrecObKdJ0hsB0f5M05GJnSXSwG1+czqWuQfyiCaZpc2Im\nCpmMBSN8DR1Kl1lZWVFcXNzhh5mLrQUqlYpiUbmgXSqViuLiYqysrLp8jR5dunBupA/fnS9g34UC\npoR4GDocQeiU6rpGtp3MZvLgPrg7dP1DwNC8vb3JyclRq9RNWUUthdlNFDtaITehPhP6ZmVlhbe3\nd5fP79GJYVw/V9wdLNl2MlskBsHkfHk2l7KaBtOvi2RuTkBAgFrHJmeU8PCa47w+fbDJtCw1RT12\nKAmkccvZEd4cvFRI/s0aQ4cjCGpTqVRsOJbJAHd7hgc4dXyCsWmsh8T/wEcTIfeU2qdF+PUmzKcX\nHx2+SmOTya20Nxk9OjEAxCp9aFLBjlNiElowHaezSknLK+ORUX4m1boTgKuHYM1Y2L0CCs7Dhhi4\nckCtU2UyGUvHBZJVUsX3afm6jbMH6/GJwc/ZlpGBzmxPzqFJfAMRTMSGY5nYW5rxUFjblYyN0o1s\n2L4INjwI9ZUwdws8exp6+cKWOZD2pVqXmTy4Dz5O1qw7fFXHAfdcPT4xgDQJnVVSReKVYkOHIggd\nul5eQ0JqHrOV3qbR+rK+Bg7+A1ZFwqXvYMIrsDwJgqeBgwc8+g14hMFni+D0pg4vp5DLWDw6gFOZ\npZzOKtXDD9Dz9KzEUHgRTm244+EpIX2wtzITO6EFkxCXlE19o4qFUUY+6axSwYVvYPVw2P8m9L8P\nnkmC8S+BufWt42yc4JFdEHgPfPkMHH2vw0vHKn1wsDITHRl1pGclhmPvwde/gcv7Wj1sZa7goTAv\nElLzuVlVb6DgBKFj9Y1NfHoii7H9XIy7blBROmyeBXG/kpLAI/EQu1EaNmqLhS3M3waDZ8D3r8L3\nf5YSy13YWprxqxF+7E7NJ7uk6/2Zhbb1rMQw5W1wGQA7HocbWa2emhvpQ11DE/Fn2+5XLQjG4Pu0\nAvLLaox3qWZtOex5FT4YCTknYfLf4Kkj0t1AR8wsYNbHEPEYHP0XfPUcNN29NtKjo/yRy2R8fETM\nNWhbz0oMlnYwbws0NcC2hdLY5y9CvBwZ5OEgSmQIRm3j8Qy8ellz78C2SzsbjEoFZ7fB+0rpzjx0\nLjx7CkY+DYpO9IeQK2DauzD2d3B6I+x4DBra3uncx9GKmKGebE/OFnf6WtazEgOAc1+Y8SHkpcC3\nL7S6XZ033Ifz18pIzb1pwAAFoW0X88tJvFLCwpF+KIypdWfeWfjvFNi5FBw84Ykf4KHVYNfF5CWT\nQfSrMPktSIuHT+dCbUWbhz4xNpCquka2JGm3tWVP1/MSA8DAqdI3kjOb4dT6loenD/XCwkzOdjEJ\nLRihTYkZWJjJiVUaSQ+RqhL4+nn4cDwU/wwx70tJwVupneuPXA7TP5D2PWyMkV7vfwzydGB0kDMb\njmWImmdapJXEsHv3bgYMGEBQUBArV6684/kDBw7g6OhIWFgYYWFhvP7662qfqzMT/gB9oyHhJciR\ndl462phzf0gfdp7JpUbUfReMSFlNPV+cziVmqKdOex+rpakRTn4E74dLq/xGPCkNG4U/AnItf9cc\ntgDmboL8VPjkfii7dschS8YGUlBWy1dn73xO6BqN/19sbGxk+fLlJCQkkJaWxtatW0lLS7vjuLFj\nx5KSkkJKSgp/+tOfOnWuTsgVMOsjsO8D2xdChVTAa67Sh/KaBnanil2VgvH44lQOVXWNhq+LlHlM\nukP45gVwD5Emlu9/G6x76e41Bz4AD38ON3Ph48lQfLnV0+P7u9Lf3Y51h68YvC90d6FxYkhKSiIo\nKIjAwEAsLCyYN28e8fHxOj9XK2ycIHYTVBVLk1yNDUQFOuPjZC0moQWjoVKp2JiYSZhPL0K9dfgB\n3J6ya/D5E9K39upSmLMeFn0F7oP08/oBY+HRr6Qd0/+dLM1r/EImk/HEmEAu5Jdz9GexSVUbNE4M\nubm5+PjcGvP09vYmN/fOJZ/Hjh0jNDSU+++/n/Pnz3fqXJ3yDIMH/gkZh+GHvyCXy4iN8OH4lWIy\niyv1G4sgtOHoz8VcKaw0zN1CQy0ceVdabZT2JYx7UdqkNniGNEmsT57DYPF3oLCE9dMg42jLU9OH\neeJiZ8k6seFNK/Qy+RweHk5WVhY//vgjzz77LA899FCnr7F27VqUSiVKpVKtuu2dMmwBKBdLy+zO\n72K20hu5DD5LztHu6whCF2w4noGzrQVTh+i5NHz699J+hL2vQeB4WH4C7v2jtBnNUFz6wePfSUPA\nm2fCxQQALM0ULBrpx8FLhVzMF+16NaVxYvDy8iI7+9awS05ODl5erQt7OTg4YGcn7dKcOnUq9fX1\nFBUVqXVus6VLl5KcnExycjKurq6ahn2nKSvBSwnxy/Goy2Jcf1d2nMoRpX0Fg8opreKHnwqYG+mD\nlblCPy9acgU+nQdbZkt3BQs+h/lbwUm9ngk65+gNj+0Gt2CIWyDtnwAejvLDylwuymRogcaJITIy\nkvT0dK5evUpdXR1xcXHExMS0OiY/P79lUigpKYmmpiacnZ3VOldvzCylLfvm1hC3gAVhvckvq+HQ\nJS3fnQhCJ2w5Ie3QX6CPukh1lfDD67B6hDS0Oul1WHYc+k3U/Wt3lq2zNMfhN0raP5G4ht62FsyO\n8CY+5RrXy0V/FU1onBjMzMxYtWoVkydPJjg4mNjYWAYPHsyaNWtYs2YNADt27CAkJIShQ4fy3HPP\nERcXh0wmu+u5BuPoBbM/gZIrRF98HWcbczEJLRhMTX0jcUlZTAx2x6uXdccndJVKBamfS9VPD78j\nzR88kwyjfy2VqTBWlvawYAcMnAa7X4b9b/H46ADqm5rYeExseNOETGWC67uUSiXJycm6e4Fj78Oe\nP/KD93KevDKG47+PxtXeUnevJwht+PxUDi98dpYtT4xgdJCLbl6k4DwkvCzdIfQZAlP/D3yjdPNa\nutLYAF//WtqwGrmEJ4tiOZF5g2Mr7sXGwgTKkuuRup+dPXPnc0dGPgODHuLe3P8wnHPsPCMmoQX9\n23g8g76utozq66z9i1eXwrcvSZ3UClKllXlLD5peUgBQmEHMKhj1LJxcx1u8T0VVNZ+fEu/brhKJ\noS0yGUxfhcy5H/+xXMX+E6fFxhlBr1Kyb3A25yaPjPTXbuvOpiZpt/L7EXByHUQ8KnVRi3xc2vRp\nqmQymPQGRP8Z56tfEufwHpsPXxCLR7pIJIa7sbSHeVuwUTTycvlbnLkidkIL+rPxeAa2Fgpmhmux\ndWdOMnx0r1TO2qW/dIcw7Z/SRs/uQCaDsb+Faf8iou4Ub1a8yoGz6YaOyiSJxNAel340xHxAmPwK\n9V+/aOhohB6iuKKWr3/MY2a4N/ZWnShZfTe15bDrafgoGsryYOY6eCwBPEI1v7YxUj5G06xPCJNf\noe83sVAuvtR1lkgMHbAOfYh9LgsYUfoVNUnrDR2O0ANsS86mrqGJhdra6fzD63B2q7TK6NlkCI3V\n/65lPVMMmcHeYe/jWn+N2rWToEQ08+kMkRjU4PjA6xxuDMF894uQe9rQ4QjdWGOTii2JWYwMdKa/\nu73mFyy8BCd/6Yo26XVpiLSHGDsllqWyV2moLJX6RRScN3RIJkMkBjWE+zvzruMKinGE7Y9ApSjU\nJejGDz8VkHujWnt1kb5/VSphcc/vtXM9E2JnaUbI8InMrHmVBhVSAcDsJEOHZRJEYlCDTCbj/uGD\nebz61zRVXIfPF7fbi1YQumpTYiYejlZMGuSu+cUu74dLu2HsC2CngzIyJuDR0f5cxodVAavBxhk2\nToef9xo6LKMnEoOaZoR78ZOsL996/xauHIB9bxo6JKGbuVxYweH0In413BczhYZvzaZG2PNH6OUH\nI57SToAmyMPRmgeHerLuxwbKfvU1OPWV6kClfm7o0IyaSAxqcrGzZGKwO3/KiaBx2CI48k/46WtD\nhyV0I5uOZ2KukDFvuK/mFzuzWdq4NukvYG6l+fVM2BNjA6isa+TT8zXw6NdS69Edj0tzL0KbRGLo\nhLmRPpRU1rHX7wXwDIedT0GRWCctaK6ytoHPT+UwdYiH5uVXasulO1qfETCo8yXuu5vBno6M6uvM\n+qMZ1Jk7wMNfQL/74JvfwqF/SLWihFZEYuiEcf1d6eNgxdYzBVIfWjML2PYw1FYYOjTBxO08k0t5\nbQOPjPTX/GJH3oXK6zD5b91+Waq6lowNJL+shq9/vAYWNjBvCwyJlRLod69IO8KFFiIxdIJCLmOO\n0ptDlwq5pnKWKrEWXYL45eJbh9BlKpWKjcczCPFyINxXw9adN7Lg2CrpQ887QivxdQfj+7sS5GbH\nusNXpfI2CnOY8SEMfxISV0vv4cYGQ4dpNERi6KQ5ET40qWDHqRypq1X0nyFtFxxfZejQBBN14moJ\nlwoqeCRKC3WRfnhdukuI/pN2gusm5HIZT4wJ4Ke8Mo5dLm5+EO5/G+75A5z9VFqKXi/6OIBIDJ3m\n62zDqL7ObE/OpqlJJe0mDX4Qvv8zXD1s6PAEE7TxeAa9bMyJCfPU7EI5yXDuM6k6cC+fjo/vYR4a\n5oWLnUXrvtAyGdzzMtz/D7j4DWyeBTVlhgvSSIjE0AVzI33IKa3m+JXiXyqxfgDOfeGzR+FmrqHD\nE0xI3s1qvjtfQKxSw9adKhV89wewc4cxv9FegN2IlbmChVH+HLhYSHrB//SFHrFUqiGVnQgbpkFl\nkWGCNBIiMXTB5MF9cLAyu9XdzcoB5m6GhhrpdrSh1rABCiZj64ksmlQqHh6h4U7n8zsh+wTc+8ce\nVfaisxaO9MPSTM5Hh9uonRQaC/M+hcKL8N/JPbrCgUgMXWBlruChYV7sPp/Pzap66UHXATB9NeQm\nw+4Vhg1QMAl1DU18mpTNhAFu+DrbdP1C9TWw98/gHgJhC7QXYDfk9Etf6J1nciksb+MLXP/JsHCn\nVHRv3+v6D9BIaCUx7N69mwEDBhAUFMTKlSvveH7Lli2EhoYyZMgQRo0axdmzZ1ue8/f3Z8iQIYSF\nhaFUKrURjl7EKn2oa2hiV8ptQ0eDH4JRz0Hyf+HMFsMFJ5iEhNQ8iipqNa+LdGKNtBpp8l9Nu9mO\nnjw+RuoLvel4RtsH+I2CEU9KDY3yzrZ9TDencWJobGxk+fLlJCQkkJaWxtatW0lLS2t1TEBAAAcP\nHuTcuXO8+uqrLF26tNXz+/fvJyUlRbd9nLUsxMuRwZ4Ot4aTmkX/GfzHwtfPw7UUwwQnmISNxzPx\nd7ZhXD8N6hhVFMKh/4P+90PgPdoKrVsLdLUjeqA7mxIzqa67S82z8S9LtZUSXu6RS9E1TgxJSUkE\nBQURGBiIhYUF8+bNIz4+vtUxo0aNonfv3gBERUWRk9M9erHOi/QhLa+M1Nybtx5UmEn7G2xdYPtC\nqCoxXICC0UrNvcmpzFIejvJDLtdgieqBt6ChGu57Q3vB9QBLxgZQWlXPjtN3+Syy7gXRr0LW8R5Z\nV0njxJCbm4uPz62lcd7e3uTm3n1lzscff8z999/f8neZTMbEiROJiIhg7dq1moajVzFhXliayYk7\nmdX6CTtXiN0kdY76/AlRiVW4w6bjmViZy5kTocGy0us/wan1oHwcXPppLbaeYHiAE6Hejvz3yFVp\n2Xlbhi2EPqHw/Z+grlK/ARqYXief9+/fz8cff8zbb7/d8tiRI0dISUkhISGB1atXc+jQoTbPXbt2\nLUqlEqVSSWFhob5CbpejtTn3h/QhPuUaNfX/8+HvHQH3/x0u/wAH/maYAAWjdKOqjvizucwY5oWj\njQatO/f8sgLpHrHYobNkMhlPjA3kalEle38qaPsguUJ6D5flSmVGehCNE4OXlxfZ2bfG2XNycvDy\nurOB+Y8//sgTTzxBfHw8zs7Orc4HcHNzY8aMGSQltd1IY+nSpSQnJ5OcnIyrq/HUlo+N9KG8poGE\n1Lw7n4x4FIY9LBXquvCt3mMTjNNnyTnU1DexMMq/6xdJ3yv1FRj/Mtg4aS22nmRqSB+8elm3vXS1\nmd9ICJkNR9+D0gy9xWZoGieGyMhI0tPTuXr1KnV1dcTFxRETE9PqmKysLGbOnMmmTZvo379/y+OV\nlZWUl5e3/PeePXsICQnRNCS9igpwxtfJ5s5JaJA2v019BzzCYOeTUHxZ/wEKRqWpScWmxEwi/Xsz\nyNOhaxdpbIA9r4BTIEQu0W6APYiZQs5jo/1JyijhbPaNux846XXp7mHPH/UXnIFpnBjMzMxYtWoV\nkydPJjg4mNjYWAYPHsyaNWtYs2YNAK+//jrFxcU8/fTTrZalFhQUMGbMGIYOHcrw4cN54IEHmDJl\niqYh6ZVS3OmDAAAgAElEQVRcLiNW6U3ilRIyi9sYhzS3kiqxys2kSqw9bKxSaO3gpUKySqpYqEkV\n1dMboPCC9IFlZqG12HqiuZE+2FuatS6T8b8cvWDsb+Gnr+DKQf0FZ0Aylcr01mIplUqjWtqaf7OG\nUSt/YNk9fXlx8sC2D7q8T6rDMngGzPpYlEPuoR77JInUa2UcffleLMy68L2s5ia8Fw6uA6WmM+L3\nSGNvffsTHx+5yoHf3YOP0102GtbXwOrhUv/sJw9Lqw9NkLqfnWLnsxb0cbTingFu7DiVQ0PjXeq6\n971XKleQ+jkk/ke/AQpGIbO4kgOXCpk/3LdrSQHg8DtQVSxtZhNJQSseHeWPDPjkaMbdDzK3kv7N\nr6dJG1i7OZEYtCRW6UNBWS0HL7WzYmr08zDgAWmsMuOo/oITjMLmxEwUMhkLRnSxdWdphvSlYuh8\n8AzTamw9mWcvax4I9WDbySxuVtff/cCB0yBgPOx/s9vXURKJQUuig91wsbNoexK6mVwOM/4DTgFS\nJdayNlYyCd1SdV0j205mM3lwH9wdutiDee9r0lxV9KtajU2QOrxV1jUSl5R194NkMql/Q22FlBy6\nMZEYtMRcIWdmuDf7LlxvuzhXMytHqRJrXSV8tgga6vQXpGAwX57Npaymoet1kbISpQqqo38NDhr2\nbRDuEOLlSFSgE+uPZVB/t+FgALdgGL5E2liYf05v8embSAxaFKv0oaFJxRd322bfzC0Ypq+SyiTv\neUU/wQkGo1Kp2HAskwHu9gwP6MKeg6YmqdeCvQeMelb7AQqAdNeQd7OGb37s4E7+nhVg1atb11ES\niUGLgtzsiPDrzbbkbDpc7BUyU+q0lbQWzm7TT4CCQZzOKiUtr4xHRvl1rXVn6ueQe0pq12lhq/0A\nBQAmDHAj0NWWdYevtP/+te4tDedlHpXu4rohkRi0bK7ShyuFlZzKLO344Il/Ab8x8NWvu/VtaU+3\n4Vgm9pZmPBR2Z0WADtVXS3MLHkMhdJ7WYxNukctlLBkbyPlrZVJ3xvaEL4I+Q2DPq1BXpZ8A9Ugk\nBi17INQDWwtF+5PQzRRmMOcT6RvItoXd8hesp7teXkNCah6zld7YWnZh7fvxVVCWA5PfkhYvCDo1\nY5gXzrYWrDvUzoY3uK2OUg4c/Zd+gtMj8ZumZbaWZjw41JOvf8yjvKadpW/N7Nxg5odQerVb/oL1\ndHFJ2dQ3qlgY1YVJ5/ICOPyutEzSf4z2gxPuYGWuYOFIP/ZfLOTn6xXtH+w3CgbPhKP/lholdSMi\nMehAbKQP1fWNfN3RJFazgHFSoa4j/4KSDr6pCCajvrGJLScyGdvPhUBXu85fYP+b0Fgnlb4Q9GbB\nCD/M5LL2l642u+8NQNbt6iiJxKADw3x60c/NTr3hpGb3vQEKc9j9e90FJujV92kFFJTVsqgrdZHy\nz8HpTTB8KTj31Xpswt252lsyMdidL87kUtvQQS8VR2+pjlJaPFxtu2WAKRKJQQdkMhlzI31Iyb7B\npYJy9U5y8ITxL8Gl3XBxt24DFPRiw7EMvHpZM2GgW+dOVKngu1ekLmLjX9RNcEK75g33oaSyju/T\n7tKr4XajnoVevpCwQqp82w2IxKAjM4Z5Ya6Qde6uYcQycOkPu1+WinYJJutifjknrpawcKQfis62\n7rz0HVw9CPf8XlqYIOjd2H6uePWyVu/9a24N970J18/DqU90H5weiMSgI8520u3ozjO51DW0s5Py\ndmYW0kqH0gw49p5O4xN0a+PxDCzM5MQqO9m6s7FeGq927gfKxTqJTeiYQi5jjtKbw+lFZJeosVow\nOAb8x8K+N7tFn3eRGHQoNlK6Hb1r68C29J0Ag6ZLVTRLM3UXnKAzZTX17DyTS8xQT5xsO9kvIfm/\nUJwufQNVaND2U9DYHKUPMhlsT1bjrqGljlIZ7P+r7oPTMZEYdGhcP1c8HK06N5wE0pp1mVwqgyCY\nnM9P5VBV19j5ukjVpVJ/8IDx0H+yboIT1ObVy5rx/V35LLmdcvq3cx8MkU9IyT0/VfcB6pBIDDqk\nkMuYE+HNofRCcm9Uq3+iozeM+x1c+Frq6yuYjKYmFZuOZxLm04tQ716dO/nQ/0H1DdFrwYjMi/Qh\nv6ym/XL6t7vn91Idpd0rTLqOkkgMOjZH6YNKBTuSOyis979GPgNOfeHbl6ChnWqtglE5ermIK0WV\nnb9bKL4MJz6EYQ9LpRYEoxAd7I6LnQVx6t712zjBva9AxmFpCauJEolBx3ycbBgd5Mxnp7JpaurE\nNwgzS2kiuuQyHF+tuwAFrdp4PBNnWwumDvHo3Inf/wkUFnCv6LVgTMwVcmZFSOX0r5epuVIw4jFw\nD5EWEZhomRutJIbdu3czYMAAgoKCWLly5R3Pq1QqnnvuOYKCgggNDeX06dNqn9sdxCp9yCmt5tjl\nTnZ96jdRKodw6B9ws5N3HILe5ZRW8cNPBcyN9MHKXKH+iRlHpGHDsc+DvbvuAhS6ZK7Sh8YmFZ+d\nUvM9KFdIE9E3s012daHGiaGxsZHly5eTkJBAWloaW7duJS0trdUxCQkJpKenk56eztq1a1m2bJna\n53YHkwf3wdHanG3qrG644+S3QNUkbXgSjNqnJ6QSCgs6UxepudeCg7c0fCgYnUBXO0YEOLHtZCfu\n+v3HwKCHpDI3N7rwvjcwjRNDUlISQUFBBAYGYmFhwbx584iPbz22Fh8fzyOPPIJMJiMqKoobN26Q\nl5en1rndgZW5gofCPPnufD43qjrZsa23H4z5LaTtgsv7dROgoLHaBql1570D3fHqZa3+iT9ug7yz\nMPHP0kYpwSjNG+5DVkkViR2V477dfW9I//u96Q0PapwYcnNz8fG5tYnH29ub3NxctY5R59xma9eu\nRalUolQqKSxUc4WAEYmN9KGuoYldZ9r++do1+tfQ2x8SXhKtQI3U7tR8iivrWNiZSee6SvjhL+AV\nIRVRFIzW/SEeOFiZsbUzS897+cKY30jNfDKO6C44HTCZyeelS5eSnJxMcnIyrq6uhg6n0wZ7OjLE\ny5G4k2p0d/tf5lYw5W0ougQn1ugmQEEjmxMz8XO2YWyQi/onHXsfyvNErwUTYGWuYMYwL75Lzae0\nshNfzkY9B44+UhtQE6qjpPFvo5eXF9nZt7JoTk4OXl5eah2jzrndSWykDxfyyzmXe7PzJw+YAv0m\nw8G3oUzNct6CXlzIL+NkRikLRvgiV7cuUtk1qY7/oIfAN0q3AQpaMW+4L3WNTezszF2/hY00pFSQ\nCqfX6yw2bdM4MURGRpKens7Vq1epq6sjLi6OmJiYVsfExMSwceNGVCoViYmJODo64uHhoda53UnM\nUE8szeSd3wnd7P6VUi0dExyz7M42J2ZiYSZnTkQn6iL98AY0NcDE13QVlqBlwR4ODPV2JO5kVufu\n+gc9JLXwNaE6ShonBjMzM1atWsXkyZMJDg4mNjaWwYMHs2bNGtaskYY9pk6dSmBgIEFBQSxZsoQP\nPvig3XO7K0drc6YO8eDLlGtU13VQ570tToHSfMO5z0xuzLK7qqhtYOfpXKaFetBb3bpI187A2U8h\nahk4Beg2QEGr5g335VJBBWeyb6h/UnMdpZqbUskTEyBTdXrA2/CUSiXJycmGDqNLjl8uZv66RP4Z\nO5SZ4d6dv0BdFaweAZZ28OQhUWjNwDYlZvLqrlS+eHoU4b5qlMhWqWD9NCj8CZ47A1aOug9S0JqK\n2gaG/3Uv00I9+PvsoZ07+ZsXIPkTeOoIuA/STYAdUPezU8x46VlUoBN+zjZdH06ysIEpb8H1NEha\np93ghE5RqVRsScxksKcDw3zUrIt04RvIPAIT/iCSggmyszTjwVBPvjqrZk/32014BSztpX4rRv59\nXCQGPZPJZMQqfThxtYSMosquXWTgNOgbLd2WlneipLegVcmZpVzIL+fhKD9k6hS9a6iT5odcB0L4\nozqPT9CNucOlnu5fne3kIhAbJ7j3j1IL0J++0k1wWiISgwHMjvBGrm6d97bIZFIdpfpq2Ptn7QYn\nqG1zYib2lmZMD/NU74ST66DkCtz3V1CY6TY4QWeG+fRigLs9205mdf7kiMfAbbBUyaC+ExWX9Uwk\nBgNwd7BiwgA3dpxSs857W1yCYNQzcHYrZCVqN0ChQ0UVtXx7Lo9ZEd7YWKjxIV9VIi017hst1cAS\nTFZzT/ezOTdJu1bWuZMVZtLqwptZ0j4WIyUSg4HERvpwvbyWAxc12MU97kVw8IJvfgdNXVjlJHTZ\n9uRs6htVPBzlq94JB9+G2nKpM5tg8maGe2FhJu/aXUPAuF+6NP7TaItjisRgIPcOdMPFzrJrhfWa\nWdhKTV0KzkldowS9aGxS8emJLKICnQhys+/4hKJ0OPkRRDxqsNUognb1srFgyuA+7DyTS019F76U\n3fcmoJLKrRshkRgMxFwhZ1a4l1TnvVzNOu9tGfSQ1Apy3xtQWaS9AIW7OnjpOjml1SyM8lfvhD2v\ngpk13CNatXYn8yJ9KKtpICG1C5UIevlKe5JSP4fMY9oPTkMiMRjQnF/qvH9xuguF9ZrJZDD1H1JB\nNjERrRebE7NwtbfkvsFq9E64cgAuJcC4F8DO9Gp8CXcXFeiMn7MNcUldvOsf/Rup3HrCS0Y3FCwS\ngwEFudmh9OvN9q4U1rud6wBpF+2ZzZBjmhv/TEV2SRX7L15nfqQP5ooO3j5NjfDdH6VvhyOW6SdA\nQW/k8ltLz68UVnT+AhY2cN/rkH8OTm/QfoAaEInBwGIjfbhSVElyZqlmFxr/Mth7SLsrjezbR3fy\naVIWMqTSCB1K2SLN/0z8i1QhV+h25kR4o5DLuj5XOHgm+I2WamdVa/gZoEUiMRjYA0M8sLM06/rt\naDNLe2lCKy/F6L59dBfNzXgmBrvj2VEzntpyqWia93AYPEM/AQp65+Zgxb0D3fj8VA51DV1Yei6T\nwZSVUHMDDhhPa2ORGAzM1tKMB4d68M25a52r896WkFlSFccfXjeZKo6mZHdqPiWVdTysTuvOo/+G\nigKY8jfpzS90W/OH+1BUUce+C12sQuARKq1YS1oH13/SamxdJRKDEXh0VAA19U1sPJ6p2YWaJ6Jr\nyqTkIGjVpuOZ+DvbMKajZjw3sqXNS0PmgLdSP8EJBjOunyt9HKzYqsld/4Q/SoUxd68wijpKIjEY\ngQF97Ll3oBsbjmd0rRz37dwHwYgn4dR6yD2tjfAE4Ke8MpIzS1kwwq/jZjzNSTlarBLrCcwUcmKV\n3hxKLyT3RhfLXNg6S0X2rhyQCi0amEgMRuKp8X0pqaxjxykN5xoA7lkBtq7w7YvQ1MWSG0Irzc14\nZkd0UCo95xSc2w4jl0OvTjTuEUzaHKX0//X2rlZNBlA+Dq7B8N0foF6DvU1aIBKDkYj0780w316s\nO3y16/WTmlk5wqTXITdZWhkjaKS8pp5dZ3J5MNSz/WY8KpX0prZ1gzHP6y9AweB8nKQhxs+Ss2ls\n6uJQUHMdpRuZcNywdZREYjASMpmMJ8f1Jaukit3n8zW/4NB54BMlbXozomVwpmjXmVwq6xo7rot0\nNg6yE6XSypZqlMoQupV5kb5cu1nDoXQN6p8F3gPBD/5SR0mDja8aEonBiEwa5E6giy1rDl7WbMMb\n3JqIri6FfX/VToA9kEqlYnNiFiFeDoS114zn+k/wzW/BdyQMe1h/AQpGY9Igd5xsLdim6dLz+96U\n9iIZsJKBRomhpKSESZMm0a9fPyZNmkRp6Z3fTLOzs5kwYQKDBg1i8ODB/Pvf/2557rXXXsPLy4uw\nsDDCwsL49ttvNQnH5CnkMpaMCyQ1t4xjl4s1v6BHqDRumfwx5P2o+fV6oOTMUi4WlPPwiHaa8dSU\nwbaHwcIOZn8CcoV+gxSMgoWZVP9s708FFJbXdv1Cvf1h9HNSb3cDldTXKDGsXLmS6Oho0tPTiY6O\nZuXKOzdomJmZ8c4775CWlkZiYiKrV68mLS2t5fnnn3+elJQUUlJSmDp1qibhdAszhnnham/JmoOX\ntXPBe18Bayf49ndGsQzO1Gw6nom9lRkxd2vGo1LBl89IDXhm/xccPPQboGBU5kb60tCk4vPTGpbT\nHvO8VFLfQHWUNEoM8fHxLFq0CIBFixaxa9euO47x8PAgPDwcAHt7e4KDg8nNNdzYmbGzMlfw2Gh/\nDqcXcf7aTc0vaN0bJr4G2SekMXBBbUUVtSSk5jErvJ1mPIn/gbR4aWlqwFj9BigYnSA3OyL9e7NN\n0/pnFrbSApK8s3Bmk/YCVJNGiaGgoAAPD+kbUp8+fSgoaH/nX0ZGBmfOnGHEiBEtj73//vuEhoay\nePHiNoeimq1duxalUolSqaSwUIPJHROwYIQfthYK1h66op0Lhi0AL6VU+71GC8mmh9h2srkZz112\nOmcel3o4D5wmlVAWBKS7hqtFlZy4qmH1gZBZ0pzVD69D9Q3tBKemDhPDxIkTCQkJueNPfHx8q+Nk\nMlm7DdErKiqYNWsW//rXv3BwcABg2bJlXLlyhZSUFDw8PHjhhRfuev7SpUtJTk4mOTkZV9fuXb7Y\n0dqcX43w5esf88guqdL8gnK5NBFdWWhU9ViMWXMznpGBzgS52d15QMV1+OxRqXLqQx+IshdCiweG\neGBvacY2TfY0wC+93d++1RZWjzpMDHv37iU1NfWOP9OnT8fd3Z28PKlJRV5eHm5ubm1eo76+nlmz\nZrFgwQJmzpzZ8ri7uzsKhQK5XM6SJUtISkrS0o9l+haPCUAug4+PXNXOBb3CpXosJz6EgvPauWY3\nduDidXJvVLNwZBt3C40NsGOxVPgsdqO0b0QQfmFtoWD6ME++PZfHzap6zS7mMRQiFkHSWii8qJ0A\n1aDRUFJMTAwbNkiVPDds2MD06dPvOEalUvH4448THBzMb3/721bPNScVgJ07dxISEqJJON2Kh6M1\n08O8iDuZRYmmxfWaRf8JrBykHdFiIrpdmxMzcbO3ZNKgNprx7H8TMg7DtHehzxD9BycYvXmRvtQ2\nNLErRQvzqfe+Cua2eq2jpFFiWLFiBd9//z39+vVj7969rFixAoBr1661rDA6evQomzZtYt++fXcs\nS33ppZcYMmQIoaGh7N+/n3fffVfDH6d7WToukJr6JjZpWlyvmY2TlBwyj8K5Hdq5ZjeUXVLFgUuF\nzBvue2czngvfwJF3pbuvsF8ZJD7B+IV4ORLi5cDWpCzN9yTZusCE38PlfXAxQTsBdkCm0jhq/VMq\nlSQn94xOZY+vP8mZ7BscfflerC20sD6+qRHW3Qvl+fBsstih24aVCRdYd/gKR16egIfjbX0XSq7A\nh/eAkz8s3iOa7wjt2pyYyR93pRK/fDRD29scqY7GelgzBhpq4OkTXf7dU/ezU+x8NnJP/lJc7zNt\nFNcDafPVA+9ARb7eJ7RMQW1DI9uTs5kY7NY6KdRXw7ZHpAnB2I0iKQgdignzxNpcQdzJLM0vpjCX\nenuUZkg9xHVMJAYjF+nfm3DfXqw7fEXz4nrNvJUwbKG0Bv/6Be1cs5tIONdGMx6VSmqZWnAOZq6T\ndqYKQgccrMx5INSDL1OuUVnboPkF+94LTx7WS0dAkRiMnEwm48nxfckuqSYhVQvF9ZpNfE3aRJMg\nJqJvtykxkwAXW0b3va0Zz+mNUpXacS9B//sMF5xgcuZF+lBZ18g3P+Z1fLA6PEK1c50OiMRgAiYF\nS8X1PjykheJ6zWxdpNUOVw9B2p071nuin/LKOJVZyoIRvrea8VxLkVZxBU6Q+lwIQidE+PUmyM2O\nrdoYTtIjkRhMgFwuY6k2i+s1Uy6Wllt+9wrUVmjvuiZqc2Imlrc346kqge0LpSQ66yNRHE/oNJlM\nxrxIH85k3eBifrmhw1GbSAwm4iFtF9cD6YNu6v9BWS4c/j/tXdcEldfUs/NMLg8O9aSXjYXU+W7n\nU1CWB3M2SMlBELpgZrg35gqZdiah9UQkBhNhZa5g8egADqcXkZqrxXpHvlEwdD4cWwVFP2vvuiZm\n15lcquoab006H3kH0r+TVoL4RBo2OMGkOdlacN/gPuw8k0tNvf4rpXaFSAwm5FcjfLGzNNNecb1m\nk14Hc2upxG8PnIhWqVRsSsxkiJcjQ70d4fJ+2P8WhMyGyCcMHZ7QDcyP9OVGVT3faaM7ox6IxGBC\nmovrfXNOS8X1mtm5wYQ/wOUf4MLX2ruuiTiZUcqlggoejvJFVnYNPn8cXPrDg/8WxfEErRjV1xkf\nJ2vNC+vpiUgMJuax0f7aLa7XLHIJuA2C3b+HOi0mHROwKfGXZjwhrvDZImiohdhNYNlGVVVB6AK5\nXMZcpQ/HLheTWVxp6HA6JBKDidFJcT0AhZk0EX0zW6oF1EMUlteyOzWP2RHeWB94DXJOwvRV4Nrf\n0KEJ3czsCB/kMkzirkEkBhP05C/F9TYez9Duhf1Hw5A5cPTfUl2gHmB7stSM5ynnFDixBqKe1svO\nUqHn6eNoxYQBbnx2Kkd7VQx0RCQGE9TP3Z6JwW5sOJZBdZ2WVzlMekOqy5LQ/TdzNTfjmeNbgfv+\nF8EnSpqIFwQdmTfcl8LyWvZduG7oUNolEoOJenJ8X0qr6rVXXK+ZgweMf1laqnlxt3avbWT2X7jO\njRsl/Ll6JVjYwJxPpKQoCDoyYYArbvaWRj+cJBKDiVL66aC4XrOoZeAyAHa/DPU12r22EdmcmMG7\n1v/FtiIDZv8XHDwNHZLQzZkp5MxRerP/4nXyblYbOpy7EonBRN1eXO9bbRbXA+lb89S/SyV+j/5b\nu9c2ElnFVQRc2cx9qqPI7n0VAsYZOiShh4hV+tCkgh3JOYYO5a5EYjBhk4LdCXS15cODWiyu1yzw\nHhj0kNSzIeFlqL6h3esb2IEfvuIPii3UBE6G0b8xdDhCD+LnbMvoIGe2JWfT1GScG0pFYjBhcrmM\nJ8cFcv5aGUd/1mJxvWYx70ktLJPWwvsRcHqTVEPIxNXcyGdy2gpumLthNWctyMXbQNCvuZG+5JRW\nc/RykaFDaZNG74iSkhImTZpEv379mDRpEqWlpW0e5+/vz5AhQwgLC0OpVHb6fOHumovrfXhIi8X1\nmlk5wrR/wtID4NwXvnwGPp4Iuae0/1r60tRI2eZHcFSVkzNpLVhr2HJRELpg8mB3etmYE5dknJPQ\nGiWGlStXEh0dTXp6OtHR0axcufKux+7fv5+UlJRW/UY7c77QNkszHRXXu53HUFj8Hcz4EG7mwLpo\niH8GKo3z20679v8Vt6ITvGf1FEMjxxo6GqGHsjRTMHOYN3vS8imuqDV0OHfQKDHEx8ezaNEiABYt\nWsSuXZ1r+KLp+YKkubjeh9ournc7mQyGzoNnkmHUM3B2K7wfDic+hEYttC3Uh4sJcPgdtjZMwGnM\n4lvNeATBAOYN96G+UcUXp3MNHcodNEoMBQUFeHh4ANCnTx8KCgraPE4mkzFx4kQiIiJYu3Ztp88X\n2udobc6CEb588+M17RbXa4uVA9z3Jiw7Bp7DpIqsH46DjKO6fV1NlVyFnU+Sa92fv8keY06Ej6Ej\nEnq4/u72hPv2Iu5klvYXj2iow8QwceJEQkJC7vgTHx/f6jiZTIbsLpUojxw5QkpKCgkJCaxevZpD\nhw7dcUx75wOsXbsWpVKJUqmksLCwo7B7nMdGB6CQy/josJ5KWbgOgIW7pGJzteWwfirseBzKrunn\n9Tujvhq2P4JKBY9WPsvkUH8cbcRGNsHw5g335XJhJacyjWt+tcPEsHfvXlJTU+/4M336dNzd3cnL\nk5pc5+Xl4ebm1uY1vLy8AHBzc2PGjBkkJSUBqH0+wNKlS0lOTiY5ORlXV9fO/ZQ9QB9HKx4K82Jb\ncrZ2i+u1RyaDQTGw/IS0W/qnr+B9JRz+p1Sh1Fh8+yLk/8i+QW+QXufMwpF+ho5IEACYFuqBnaUZ\nW41sElqjoaSYmBg2bNgAwIYNG5g+ffodx1RWVlJeXt7y33v27CEkJETt8wX1PTleR8X1OmJhI/Vz\nWH5C2v/ww1/gg5GQvle/cbTl9CY4swnV2N+x8rI/od6OhHqLlUiCcbCxMCMmzJNvzl2jrKbe0OG0\n0CgxrFixgu+//55+/fqxd+9eVqyQCq9du3aNqVOnAtI8wpgxYxg6dCjDhw/ngQceYMqUKe2eL3RN\nkJs9E4Pd2XAsg6o6A0wIOwXA/E9hwefS3cSWWbB1vjS+bwh5Z+Hb30HAeJL8niT9esWt1p2CYCTm\nRfpQU99EfIrxDMPKVMY266EGpVLZatmrcEtyRgmz1xznLzGDWTTK33CBNNRB4gdw8O/Q1ACjfw1j\nnpfuLvShuhTW3iPF8dRhnonP4tClQk78YSLWFgr9xCAIalCpVEx97wgKOXz9rG6XUKv72Sm2fHYz\nSn8nIvx666a4XmeYWcCY38CzydI8xKG/w+rhkBav+77STU2wc5m05yJ2A9eb7PjufD6zI3xEUhCM\njkwmY/5wH1Jzy3S3F6mTRGLohp4cF0hOqQ6K63WFgyfM+gge/VbaSb39Edg4Ha5f0N1rHv0XXEqA\nyW+Bz3C2n5Sa8SyI8tXdawqCBqYP9cLSTE7cySxDhwKIxNAtTQx2p6+uiut1lf9oWHpQah+alwJr\nRsN3r0BNmXZf58pB2PcGhMyC4UtpbFKxNSmb0UHO9HUVPZwF4+RoY84DQzyIP3PNMPOD/0Mkhm5I\nKq7Xl/PXyjjysxGVrVCYwfAl8OxpCFsAx1fDKiWkbNVOcb6ya7BjMTj3gwffA5mM/Reuk3ujmoVi\n0lkwcnMjfSivbeDbc4a/0xeJoZuaPswTN3tLPjxohL2bbV2kyq1L9oGjD+x6Cj6ZAtdSun7Nxnr4\n7FFpM9vcTWAp3R1sSszE3cGSicHu2oldEHRkeIATgS62xCUZfjhJJIZuytJMweIxARz5WYfF9TTl\nFQ6Pfw/TV0PJFWkV0dfPQ1VJ56/1/Z8g+wRMf1/alQ1kFldyKL2Q+cN9MVOIX3XBuMlkMuZG+pCc\nWcUyLBIAABBNSURBVMrP18sNGot4t3Rjeimupym5HIY9LBXni1oGpzZIxflOfgxNjepdI/ULaWns\niKekuYVffHoiC7lMxrxIMeksmIZZEd6YyWUG7wktEkM35mClx+J6mrLuBVP+Bk8dAfcQ+Oa30h1E\nVmL75xVegi+fBe/hMOmNlodr6hvZnpzNfYPc6eNopdvYBUFLXOwsmTTInc9P51LboOYXIx0QiaGb\nWzxGKq63Tl/F9TTlPggWfQWzP4GqYvjvZPjiSShvY0KutgK2LwQzK5izXto78Ytvz+VRWlUvdjoL\nJmfecF9KKuvYm3bdYDGIxNDNuTtYMWOYF9uTs42yIUibZDIImQnPnISxL8D5L6TifMfelyaZQdok\n99WvoegSzP4YHL1aXWJzYiaBrraM6utsgB9AELpuTJALXr2sDbqnQSSGHmDpuObiepmGDqVzLGwh\n+k/wdCL4jYI9f4T/jILL+yBpHaTugAmvSIX7bnP+2k1OZ91gwQi/dku5C4IxUshlxCp9OJxeZLAh\nYJEYeoDm4nobjxuouJ6mnPvCgu0wf5t0x7BpBux+GfpPgTG/vePwzYlZWJnLmR3ubYBgBUFzc5Te\nyGWwPdkwk9AiMfQQT40PpLSqns+ScwwdStcNmCLdPdz7KgRNhBlrpFVNtymrqWfXmVxihnqKZjyC\nyfLsZc34/q58lpxjkJpnIjH0EEp/J5TGUFxPU+ZWMO53sOAzsO59x9M7T+dSXd/Iwih//ccmCFo0\nN9KX/LIaDl7Sf8dKkRh6kCfH9yWntJpvzuUZOhSdUKlUbErMZKi3I0O8HQ0djiBoJDrYDRc7S+IM\nsKdBJIYeJHqg2y/F9a4YT3E9LTpxtYSfRTMeoZswV8iZHeHNvgvXuV5Wo9fXFomhB2kurpeWZ2TF\n9bRkc2ImjtbmPDjU09ChCIJWzI30obFJxWen9Ds3KBJDDzN9mCfuDkZaXE8D18tr2J2az5wIb6zM\nRTMeoXsIcLElKtCJ7cnZNDXp7y5fo8RQUlLCpEmT6NevH5MmTaK0tPSOYy5evEhYWFjLHwcHB/71\nr38B8Nprr+Hl5dXy3LfffqtJOIIaLM0ULB5t5MX1umD7yWwamlQsEMNIQjczL9KXzOIqEq8U6+01\nNUoMK1euJDo6mvT0dKKjo1m5cuUdxwwYMICUlBRSUlI4deoUNjY2zJgxo+X5559/vuX5qVOnahKO\noKb5I3yxtzRjzcHLhg5FKxqbVHx6Ioux/VwIcLE1dDiCoFVTQvrgaG2u10lojRJDfHw8ixYtAmDR\nokXs2rWr3eN/+OEH+vbti5+f+FZnSA5W5vwqypdvz+WRVWzkxfXUsO/Cda7drGHBCPF7JXQ/VuYK\nZgzzYndqPqWVdXp5TY0SQ0FBAR4eHgD06dOHgoKCdo+Pi4tj/vz5rR57//33CQ0NZfHixW0ORQm6\nsXh0AGZyOR8dMf25hk2JmfRxsGJisJuhQxEEnZgb6UNdYxM7z+Tq5fU6TAwTJ04kJCTkjj/x8fGt\njpPJZO3Wpamrq+PLL79kzpw5LY8tW7aMK1eukJKSgoeHBy+88MJdz1+7di1KpRKlUklhof43fHQ3\nJllcrw2ZxZUcuiSa8QjdW7CHA0N9ehF3MksvS83NOjpg7969d33O3d2dvLw8PDw8yMvLw83t7t/Y\nEhISCA8Px93dvdX5zZYsWcK0adPuev7SpUtZunQpAEqlsqOwBTUsGRfItuRsNh7P5PlJ/Q0dTpds\nOZGFQi5j3nAfQ4ciCDo1P9KHFV+c40z2DcJ979z1r00afcWKiYlhw4YNAGzYsIHp06ff9ditW7fe\nMYyUl3drB+7OnTsJCQnRJByhk4Lc7Jg0yJ0Nx02zuF5zM57Jg91x///27j6m6TuPA/i7iLgpj0UK\nhQJtoYNSWirFeskymAozQTOOBw1MMs/pce72jzG68JfT3BbMEqNL3F2myy132Z3clmzDG8MIaMQH\nvDoedsfICIetoxQ5NigP5amFz/3BUtegKEL9lfF5JSS0lH7fkB/90N/3+/t8g3kzHvbLtiMtGiXG\nWIQ86/0eYIsqDOXl5aitrYVKpUJdXR3Ky8sBADabzWOFkcPhQG1tLQoKCjy+/80334RWq4VOp8OV\nK1dw6tSpxcRhT+BAlhL2MSc+EXgrwSdR/e9e2MecKOVJZ7YCBK7xR0WBDgkRgV4fS0TLsDdCRkYG\nvv76a6Fj/GIU/ekmeocmcPXIi8vqPH3+H29gaNyJ+kNZvO8CY4/hcV87l8+rAPOaA1kJ6LEvr+Z6\nbT1DaPnejlLejIexJceFgWFLsgSJksBl1Vzvb/+6i2dW+6HQwJvxMLbUuDAw+PmJUJapRHvvMK51\n+n5zvdnNeGzIS4t5KhNxjK00j1yuylaGPH00Tl7qwAcNXch8LkLoOB6ICHd+cMBkHoDJPIBbd37E\nuHOa22sz5iVcGBiA+831Kmq+w3+sQ4JudDMzQ/ju3ghM5h9hsswWgx9GZ1sBrA8MgFEhRrkmijfj\nYcxLuDAwt1c2xeHM5f/ig4YunHkl/amN65yeQVvPkPsdwW3LAIYnZq+riA55Bi+oImBUiGFUiKFc\nv44nmxnzMi4MzC3omdXY/at4nG3owvc/jiEufK1XxplwTqO12+4uBE13BzHunAYAKNevQ65W6i4E\nsjDvZGCMPRwXBuZh7/Ny/Pm6Geeu3cEffr00V6KPTrrQfHfQXQhau+2Ymp6BSAQkRQZhV4YMRkU4\nNirCIAniK5gZExoXBubh5831DmarEB64ZsHPYR+bwm3L4OwcgXkAbbZhTM8QVvmJkBoTgt88L4dR\nLkaGPAyhawO88FMwxhaDCwOb47eZSnzS1I2/NN7Focdorve/4Qn3JLHJPIDv7o0AAAL8/aCPDcXv\nX0yAUSFGelwY1q3hQ44xX8d/pWyOREkgctSR+GujBQeylFgbcP8wISJYB8fdRcBkGYD5BwcAYG3A\nKhjiw7BDJ4VREQ6dLIT3X2ZsGeLCwB7od1kJuNTeh3/c7sYLqoifCsHsqSHb0AQAIOTZ1dgoF+MV\nYxyMCjE00cHLqtcSY+zBuDCwBzLEh2GjPAzH/9nuvi8iaA2MCjEO/LRi6DlJEPz8eOkoY780XBjY\nQx3docHfTd9DHxsCoyIc8vC1fA0BYysAFwb2UFpZCCpkWqFjMMaeMj4hzBhjzAMXBsYYYx64MDDG\nGPOwqMLw6aefQqPRwM/Pb97t4i5evIikpCQkJibixIkT7vsHBgaQk5MDlUqFnJwcDA4OLiYOY4yx\nJbCowpCamorPPvsMmZmZD33M9PQ03njjDdTU1KC9vR3nz59He/vsEsgTJ05g69at6OzsxNatWz2K\nBmOMMWEsqjCo1WokJSXN+xiTyYTExEQolUoEBASguLgYVVVVAICqqirs2bMHALBnzx588cUXi4nD\nGGNsCXh9jqGnpwexsbHu2zKZDD09PQCAvr4+SKVSAEBUVBT6+vq8HYcxxtgjPPI6huzsbNy7d2/O\n/e+88w7y8vKWLIhIJJr34qmzZ8/i7NmzAID+/v4lG5cxxpinRxaGurq6RQ0QExOD7u5u922r1YqY\nmBgAQGRkJHp7eyGVStHb2wuJRPLQ5ykrK0NZWRkAYP369cjIyHiiPP39/YiI8K09jQHOtVCca2E4\n18L4ai5gcdksFsvjPZCWQFZWFt2+ffuBX3M6naRQKOjOnTs0OTlJOp2O2traiIjo8OHDVFFRQURE\nFRUVdOTIkaWIMy+DweD1MZ4E51oYzrUwnGthfDUX0dPJtqg5hs8//xwymQyNjY3Yvn07tm3bBgCw\n2WzIzc0FAPj7++PMmTPYtm0b1Go1du3aBY1GAwAoLy9HbW0tVCoV6urqUF5evpg4jDHGlsCieiXl\n5+cjPz9/zv3R0dH46quv3Ldzc3PdheLnwsPDUV9fv5gIjDHGltiqY8eOHRM6xNNmMBiEjvBAnGth\nONfCcK6F8dVcgPeziYiIvDoCY4yxZYV7JTHGGPOwogrDw3o2Cem1116DRCJBamqq0FE8dHd3Y/Pm\nzUhJSYFGo8F7770ndCQAwMTEBIxGI9LS0qDRaPDWW28JHcnD9PQ0NmzYgB07dggdxU0ul0Or1UKv\n1z/xMm9vsNvtKCoqQnJyMtRqNRobG4WOhI6ODuj1evdHcHAwTp8+LXQsAMCpU6eg0WiQmpqKkpIS\nTExMeG8wr6978hEul4uUSiV1dXW5l81+++23Qseiq1evUlNTE2k0GqGjeLDZbNTU1ERERMPDw6RS\nqXzi9zUzM0MjIyNERDQ1NUVGo5EaGxsFTnXfyZMnqaSkhLZv3y50FLf4+Hjq7+8XOsYcr776Kp07\nd46IiCYnJ2lwcFDgRJ5cLhdFRkaSxWIROgpZrVaSy+U0NjZGREQ7d+6kjz76yGvjrZh3DPP1bBJS\nZmYmxGKx0DHmkEqlSE9PBwAEBQVBrVa7W5kISSQSITAwEADgdDrhdDp9ZrtRq9WK6upq7N+/X+go\nPm9oaAgNDQ3Yt28fACAgIAChoaECp/JUX1+PhIQExMfHCx0FAOByuTA+Pg6Xy4WxsTFER0d7bawV\nUxjm69nE5mexWNDS0oJNmzYJHQXA7OkavV4PiUSCnJwcn8l18OBBvPvuu/Dz860/K5FIhOzsbBgM\nBndbGaGZzWZERERg79692LBhA/bv3w+HwyF0LA+VlZUoKSkROgaA2Q4Shw8fRlxcHKRSKUJCQvDS\nSy95bTzfOoKZzxkdHUVhYSFOnz6N4OBgoeMAAFatWoXW1lZYrVaYTCa0tbUJHQlffvklJBKJTy5x\nvH79OlpbW1FTU4P3338fDQ0NQkeCy+VCc3MzXn/9dbS0tGDdunU+M+8HAFNTU7hw4QJ27twpdBQA\nwODgIKqqqmA2m2Gz2eBwOPDxxx97bbwVUxjm69nEHszpdKKwsBC7d+9GQUGB0HHmCA0NxebNm3Hx\n4kWho+DGjRu4cOEC5HI5iouLcfnyZZSWlgodCwDcx7lEIkF+fj5MJpPAiWbfsctkMve7vaKiIjQ3\nNwuc6r6amhqkp6cjMjJS6CgAZnvWKRQKREREYPXq1SgoKMDNmze9Nt6KKQwbN25EZ2cnzGYzpqam\nUFlZiZdfflnoWD6LiLBv3z6o1WocOnRI6Dhu/f39sNvtAIDx8XHU1tYiOTlZ4FRARUUFrFYrLBYL\nKisrsWXLFq/+R/e4HA4HRkZG3J9funTJJ1bARUVFITY2Fh0dHQBmz+enpKQInOq+8+fP+8xpJACI\ni4vDrVu3MDY2BiJCfX091Gq19wb02rS2D6quriaVSkVKpZLefvttoeMQEVFxcTFFRUWRv78/xcTE\n0Icffih0JCIiunbtGgEgrVZLaWlplJaWRtXV1ULHom+++Yb0ej1ptVrSaDR0/PhxoSPNceXKFZ9Z\nldTV1UU6nY50Oh2lpKT4zHFPRNTS0kIGg4G0Wi3l5eXRwMCA0JGIiGh0dJTEYjHZ7Xaho3g4evQo\nJSUlkUajodLSUpqYmPDaWHzlM2OMMQ8r5lQSY4yxx8OFgTHGmAcuDIwxxjxwYWCMMeaBCwNjjDEP\nXBgYY4x54MLAGGPMAxcGxhhjHv4P7MaEIopek/8AAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f74c3702cc0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "epochs  = 100\n",
    "def plot_results(predicted_data, true_data):\n",
    "    fig = plt.figure(facecolor='white')\n",
    "    ax = fig.add_subplot(111)\n",
    "    ax.plot(true_data, label='True Data')\n",
    "    plt.plot(predicted_data, label='Prediction')\n",
    "    plt.legend()\n",
    "    plt.show()\n",
    "model = lstm.build_model([1, 5, 20, 1])\n",
    "model.fit(\n",
    "            x_train,\n",
    "            y_train,\n",
    "            batch_size=512,\n",
    "            nb_epoch=epochs,\n",
    "            validation_split=0.05)\n",
    "#predictions = lstm.predict_sequences_multiple(model, X_test, seq_len, 50)\n",
    "#predicted = lstm.predict_sequence_full(model, X_test, seq_len)\n",
    "predicted = lstm.predict_point_by_point(model, x_test)\n",
    "plot_results(predicted, y_test)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.0"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
